home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / mthr25 / demo5.c < prev    next >
Text File  |  1994-03-15  |  1KB  |  68 lines

  1. /* This is a minimal demonstration of the use of the MTask */
  2. /* multitasking kernel.  3 tasks are created: One to print */
  3. /* the character 'A' continous, another to print 'B', and  */
  4. /* a third to wait for the 'q' key to be pressed - to stop */
  5. /* the multitasking.                                       */
  6.  
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include "mtask.h"   /* This header file must be included. */
  11.  
  12. char Data=0;
  13. unsigned semaphore=0;
  14.  
  15. void Sender(void)
  16. {
  17.   char ch;
  18.   while(1){
  19.     while(Data);
  20.     ch = MTGetch();
  21.     MTPrintf("Sender: sending character %c.\n",ch);
  22.     MTWait(&semaphore);
  23.     Data = ch;
  24.     MTSignal(&semaphore);
  25.     if (ch =='q') 
  26.       EndMultiTasking();
  27.   }
  28. }
  29.  
  30.  
  31.  
  32. void Receiver(void)
  33. {
  34.   char ch;
  35.   while(1){
  36.     if (Data != 0){
  37.       MTWait(&semaphore);
  38.       ch=Data;
  39.       Data=0;
  40.       MTSignal(&semaphore);
  41.       MTPrintf("Receiver: receiving %c.\n",ch);
  42.     }
  43.     delay(200);
  44.   }
  45. }
  46.  
  47.  
  48.  
  49.  
  50.  
  51. /* the main program */
  52. void main(void)
  53. {
  54.   /* The multitasking kernel has to be initialised */
  55.   InitMultiTasking();
  56.  
  57.   AddTask( Sender);
  58.   AddTask( Receiver);
  59.  
  60.   puts("Multitasking starting...\n");
  61.  
  62.   StartMultiTasking();
  63.  
  64.   puts("\nMultitasking ended.");
  65. }
  66.  
  67.  
  68.